package com.shakespace.artofandroid.chapter10handler

/**
 * created by  shakespace
 * 2021/4/12  11:51
 */

fun main() {

    val threadLocal = ThreadLocal<Boolean>()
    threadLocal.set(true)
    println("main  ${threadLocal.get()}")

    object : Thread("Thread1") {
        override fun run() {
            threadLocal.set(false)
            println("Thread1  ${threadLocal.get()}")
        }
    }.start()

    object : Thread("Thread2") {
        override fun run() {
            println("Thread2  ${threadLocal.get()}")
        }
    }.start()


    /**
     * 尽管使用的是同一个对象，但是在不同线程拿到的值各不一样, 因为set 的时候会获取当前线程，然后设置值，同样的，获取时会先拿到当前线程
     * main  true
     *Thread1  false
     *Thread2  null
     */
}